Memory devices are typically provided as internal, semiconductor, integrated circuits and/or external removable devices in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and can include random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can retain stored data when not powered and can include NAND flash memory, NOR flash memory, phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetic random access memory (MRAM), among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory (e.g., NAND flash memory and/or NOR flash memory), and/or can include volatile memory (e.g., DRAM and/or SRAM), among various other types of non-volatile and volatile memory. Flash memory devices can include memory cells storing data in a charge storage structure such as a floating gate, for instance, and may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption, relative to various other memory devices.
Memory cells in an array architecture can be programmed to a target (e.g., desired) state. For instance, electric charge can be placed on or removed from the charge storage structure (e.g., floating gate) of a flash memory cell to program the cell to a particular data state. The stored charge on the charge storage structure of the memory cell can indicate a threshold voltage (Vt) of the cell.
A memory cell programmable to two different states may be referred to as a single level cell (SLC), and a memory cell programmable to more than two states may be referred to as multilevel cells (MLCs), multistate cells, and/or multiunit cells. As an example, a flash SLC is programmable to a targeted one of two different Vt levels corresponding to two respective data states such that it stores a single bit of data (e.g., binary “1” or “0”). MLC flash memory cells are programmable to a targeted one of more than two different Vt levels corresponding to more than two respective data states such that they can store more than a single bit of data per cell. For instance, some MLC cells can store 4 bits per cell with the cells being programmable to sixteen different data states, which can be assigned different respective 4-bit binary values (e.g., 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, and 1111) The binary encoding of the different states (e.g., the particular assignments of binary values to respective states is variable. For instance, a gray code may be used such that the binary values assigned to two successive (e.g., neighbor) states differ in only one bit. One example of a 4-bit gray code is (1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, and 1110).